package com.lrs.java.jdbc.jdbc_teacher;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//直接连接数据库
class TestJDBC {

	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			//1,向系统注册一个驱动程序。
			//显式地加载驱动程序类
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			//new oracle.jdbc.driver.OracleDriver();
			//添加系统属性
			//DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类
			//jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
			//System.setProperty("jdbc.drivers","oracle.jdbc.driver.OracleDriver");

			//DriverManager,管理 JDBC 驱动程序
			//2,指定数据库 jdbc:oracle:thin:@192.168.0.66:1521:BJSXT
			//3,打开数据库连接
			//大小写没关系
			//bjsxt和服务名对应
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:BJSXT", "scott",
					"tiger");
			//在默认情况下，同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。
			//因此，如果读取一个 ResultSet 对象与读取另一个交叉，则这两个对象必须是由不同的 Statement 对象生成的。
			stmt = conn.createStatement();
			//4,提交数据库查询
			//5,取得查询结果
			rs = stmt.executeQuery("select * from emp");
			while(rs.next()) {
				//数值类型可以getString
				//字符类型不能getInt
				System.out.println(rs.getString("empno"));
				System.out.println(rs.getInt("empno"));
				System.out.println(rs.getString(2));
			}
		//} catch (ClassNotFoundException e) {
		//	e.printStackTrace();
		} catch (SQLException e) {
			//要打印些消息出来
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) {
					rs.close();
					rs = null;
				}
				if(stmt != null) {
					stmt.close();
					stmt = null;
				}
				if(conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
	}

}
